Python中time模块详解
在我们平常的代码中,经常需要和时间打交道。在Python中,与时间处理相关的模块有:time、datetime以及calendar。学会计算时间,对程序的调优非常重要,可以在程序中狂打时间戳,来具体判断程序中哪一块耗时最多,从而找到程序调优的重心处。这里先来讲一个time模块。
在开始前,先说明几点:
- 在Python中,通常有这几种方式表示时间:时间戳、格式化的时间字符串、元组(struct_time 共九种元素)。由于Python的time模块主要是调用C库实现的,所以在不同的平台可能会有所不同。
- 时间戳(timestamp)的方式:时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量。查看一下type(time.time())的返回值类型,可以看出是float类型。返回时间戳的函数主要有time()、clock()等。
- UTC(世界协调时),就是格林威治天文时间,也是世界标准时间。在中国为UTC+8。DST夏令时。
- 元组方式:struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
>>> import time
>>> ls = time.localtime()
>>> ls
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=24, tm_hour=9, tm_min=39, tm_sec=38, tm_wday=0, tm_yday=236, tm_isdst=0)
直接使用元组索引获取对应项的值:
>>> ls[0]
2015
>>> ls[1]
8
>>> ls[-1]
0
或者是使用成员符号调用:
>>> ls.tm_year
2015
既然是一个元组,那么就遵循元组的所有特性,比如索引(都从0开始),切片等。下面元组中各元素的解释:
tm_year :年
tm_mon :月(1-12)
tm_mday :日(1-31)
tm_hour :时(0-23)
tm_min :分(0-59)
tm_sec :秒(0-59)
tm_wday :星期几(0-6,0表示周日)
tm_yday :一年中的第几天(1-366)
tm_isdst :是否是夏令时(默认为-1)
time模块中常用的函数
使用该模块中的函数时,必须先引入该模块(import time)
1、time.time():返回当前时间的时间戳
>>> time.time()
1440337405.85
#对时间戳取整
>>> int(time.time())
1440746424
2、time.localtime( [secs] )
将一个时间戳转换为当前时区的struct_time,即时间数组格式的时间
参数:
- sec – 转换为time.struct_time类型的对象的秒数
如果secs参数未提供,则以当前时间为准(即会默认调用time.time())。
未给定参数
>>> time.localtime()
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=23, tm_hour=21, tm_min=49, tm_sec=27, tm_wday=6, tm_yday=235, tm_isdst=0)
给定参数
>>> time.localtime(1440337405.85)
time.struct_time(tm_year=2015, tm_mon=8, tm_mday=23, tm_hour=21, tm_min=43, tm_sec=25<